মাইএসকিউএল ফরেন কী সীমাবদ্ধতা
FOREIGN KEY সীমাবদ্ধতাটি এমন ক্রিয়াকলাপ প্রতিরোধ করতে ব্যবহৃত হয় যা টেবিলের মধ্যে লিঙ্কগুলিকে ধ্বংস করতে পারে।
একটি বিদেশী কী হল একটি টেবিলের একটি ক্ষেত্র (বা ক্ষেত্রগুলির সেট) যা অন্য টেবিলের একটি প্রাথমিক কীকে বোঝায়।
বিদেশী কী যুক্ত টেবিলকে চাইল্ড টেবিল এবং প্রাথমিক কী যুক্ত টেবিলকে রেফারেন্সড বা প্যারেন্ট টেবিল বলা হয়।
নিম্নলিখিত দুটি টেবিল দেখুন:
ব্যক্তিদের টেবিল
| PersonID | LastName | FirstName | Age |
|---|---|---|---|
| 1 | Hansen | Ola | 30 |
| 2 | Svendson | Tove | 23 |
| 3 | Pettersen | Kari | 20 |
অর্ডার টেবিল
| OrderID | OrderNumber | PersonID |
|---|---|---|
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 2 |
| 4 | 24562 | 1 |
মনে রাখবেন যে "অর্ডার" টেবিলের "PersonID" কলামটি "ব্যক্তি" টেবিলের "PersonID" কলামকে উল্লেখ করে।
"ব্যক্তি" টেবিলের "PersonID" কলামটি "ব্যক্তি" টেবিলের প্রাথমিক কী।
"অর্ডার" টেবিলের "PersonID" কলামটি "অর্ডার" টেবিলের একটি বিদেশী কী।
দ্রষ্টব্য:
যেহেতু FOREIGN KEY সীমাবদ্ধতা অবশ্যই প্যারেন্ট টেবিলের মানগুলির মধ্যে একটি হতে হবে, এটি বিদেশী কী কলামে অবৈধ ডেটা সন্নিবেশ করাতে বাধা দেয়।
সারণী তৈরিতে বিদেশী চাবিকাঠি
নিম্নলিখিত SQL "PersonID" কলামে একটি বিদেশী কী তৈরি করে যখন "অর্ডার" টেবিল তৈরি হয়:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
একটি বিদেশী কী সীমাবদ্ধতার নামকরণের অনুমতি দিতে এবং একাধিক কলামে একটি বিদেশী কী সীমাবদ্ধতা সংজ্ঞায়িত করতে, নিম্নলিখিত SQL সিনট্যাক্স ব্যবহার করুন:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
পরিবর্তিত টেবিলে বিদেশী চাবি
টেবিলটি ইতিমধ্যে তৈরি হওয়ার পরে "PersonID" কলামে একটি বিদেশী কী সীমাবদ্ধতা তৈরি করতে নিম্নলিখিত SQL ব্যবহার করুন:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
একটি বিদেশী কী সীমাবদ্ধতার নামকরণের অনুমতি দিতে এবং একাধিক কলামে একটি বিদেশী কী সীমাবদ্ধতা সংজ্ঞায়িত করতে, নিম্নলিখিত SQL সিনট্যাক্স ব্যবহার করুন:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
বিদেশী কী সীমাবদ্ধতা অপসারণ করা হচ্ছে
একটি বিদেশী কী সীমাবদ্ধতা মুছে ফেলার জন্য, নিম্নলিখিত SQL ব্যবহার করুন:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;